﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using MJM.SUD.EntidadesNegocio;
using System.Collections.Generic;
using MJM.RPP.EntidadesNegocio;
using MJM.SPP.EntidadesNegocio;
using MJM.Principal;

namespace wRegPadron.frmOpciones
{
    public partial class ucDireccion : System.Web.UI.UserControl
    {
        public static List<DireccionE> lst;
        public static PersonaE objPersonaE;
        public static bool IsMuni=false;

        public void SetPersona(PersonaE obj)
        {
            objPersonaE = obj;
        }

        public void Limpiarddl(int TipoCombo)
        {
            UbicacionE obj = new UbicacionE();
            List<UbicacionE> lst = new List<UbicacionE>();
            if (TipoCombo == 1)
            {
                obj.IDUbicacion = -1;
                obj.Descripcion = "----Seleccione un departamento----";
                lst.Add(obj);
                ddlDepartamento.DataSource = lst;
                ddlDepartamento.DataValueField = "IDUbicacion";
                ddlDepartamento.DataTextField = "Descripcion";
                ddlDepartamento.DataBind();
                Limpiarddl(2);
            }
            if (TipoCombo == 3)
            {
                obj.IDUbicacion = -1;
                obj.Descripcion = "---------Seleccione un distrito---------";
                lst.Add(obj);
                ddlDistrito.DataSource = lst;
                ddlDistrito.DataValueField = "IDUbicacion";
                ddlDistrito.DataTextField = "Descripcion";
                ddlDistrito.DataBind();
            }
            if (TipoCombo == 2)
            {
                obj.IDUbicacion = -1;
                obj.Descripcion = "-------Seleccione una provincia-------";
                lst.Add(obj);
                ddlProvincia.DataSource = lst;
                ddlProvincia.DataValueField = "IDUbicacion";
                ddlProvincia.DataTextField = "Descripcion";
                ddlProvincia.DataBind();
                Limpiarddl(3);
            }
            if (TipoCombo == 4)
            {
                ddlDepartamento.DataSource = MediadorCN.GetUbicacion().ListaUbicacion(0, 1, 0);
                ddlDepartamento.DataTextField = "Descripcion";
                ddlDepartamento.DataValueField = "IDUbicacion";
                ddlDepartamento.SelectedIndex = 14;
                ddlDepartamento.DataBind();
                ddlProvincia.DataSource = MediadorCN.GetUbicacion().ListaUbicacion(14, 2, 0);
                ddlProvincia.DataTextField = "Descripcion";
                ddlProvincia.DataValueField = "IDUbicacion";
                ddlProvincia.SelectedIndex = 8;
                ddlProvincia.DataBind();
                ddlDistrito.DataSource = MediadorCN.GetUbicacion().ListaUbicacion(1, 3, 14);
                ddlDistrito.DataTextField = "Descripcion";
                ddlDistrito.DataValueField = "IDUbicacion";
                ddlDistrito.SelectedValue = "33";
                ddlDistrito.DataBind();
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                SubOpcionEN objSubOpcionEN = MediadorCN.GetSubOpcion().ObtenerTexto("MenuDireccion");
                lblTitulo.Text = objSubOpcionEN.SUBOPT_chNOMSOP;
                lblDescripcion.Text = objSubOpcionEN.SUBOPT_chDESSOP;              
                List<DireccionE> lstViasDistrito = new List<DireccionE>();
                lst = MediadorCN.GetDireccion().ListaxPersona(Session["UsuLog"].ToString());
                gvDomicilios.DataSource = lst;
                gvDomicilios.DataBind();

                ddlDepartamento.DataSource = MediadorCN.GetUbicacion().ListaUbicacion(0, 1, 0);
                ddlDepartamento.DataTextField = "Descripcion";
                ddlDepartamento.DataValueField = "IDUbicacion";
                ddlDepartamento.SelectedIndex = 14;
                ddlDepartamento.DataBind();
                ddlProvincia.DataSource = MediadorCN.GetUbicacion().ListaUbicacion(14, 2, 0);
                ddlProvincia.DataTextField = "Descripcion";
                ddlProvincia.DataValueField = "IDUbicacion";
                ddlProvincia.SelectedIndex = 8;
                ddlProvincia.DataBind();
                ddlDistrito.DataSource = MediadorCN.GetUbicacion().ListaUbicacion(1, 3, 14);
                ddlDistrito.DataTextField = "Descripcion";
                ddlDistrito.DataValueField = "IDUbicacion";
                ddlDistrito.SelectedValue = "33";
                ddlDistrito.DataBind();

                if (Convert.ToInt32(Session["muni"].ToString()) == 1)
                {
                    IsMuni = true;
                    tpDomicilios.Visible = false;
                    lblDireccion.Text = "Su dirección actual es: " + MediadorCN.GetDireccion().GetDireccion(Convert.ToInt32(objPersonaE.IDPersona));
                    if (lblDireccion.Text == "Su dirección actual es: " || lblDireccion.Text == "Su dirección actual es:  ")
                    {
                        lblDireccion.Text = "Usted no ha ingresado su dirección";
                    }

                    btnGuardar.Text = "Actualizar dirección";
                    ddlVia.DataSource = MediadorCN.GetDireccion().ListarViasTramite(1);
                    ddlVia.DataTextField = "sVia1";
                    ddlVia.DataValueField = "IDVia1";

                    ddlDepa.DataSource = MediadorCN.GetDireccion().ListarViasTramite(2);
                    ddlDepa.DataTextField = "sVia1";
                    ddlDepa.DataValueField = "IDVia1";

                    ddlManzana.DataSource = MediadorCN.GetDireccion().ListarViasTramite(3);
                    ddlManzana.DataTextField = "sVia1";
                    ddlManzana.DataValueField = "IDVia1";

                    ddlZona.DataSource = MediadorCN.GetDireccion().ListarViasTramite(4);
                    ddlZona.DataTextField = "sVia1";
                    ddlZona.DataValueField = "IDVia1";

                    ddlVia.DataBind();
                    ddlManzana.DataBind();
                    ddlZona.DataBind();
                    ddlDepa.DataBind();

                    ddlViaJesusMaria.Visible = false;
                    txtVia.Visible = true;

                }
                else
                {
                    IsMuni = false;
                    ddlVia.DataSource = MediadorCN.GetDireccion().ListarVias(1);
                    ddlVia.DataTextField = "sVia1";
                    ddlVia.DataValueField = "IDVia1";

                    ddlDepa.DataSource = MediadorCN.GetDireccion().ListarVias(3);
                    ddlDepa.DataTextField = "sVia1";
                    ddlDepa.DataValueField = "IDVia1";

                    ddlManzana.DataSource = MediadorCN.GetDireccion().ListarVias(2);
                    ddlManzana.DataTextField = "sVia1";
                    ddlManzana.DataValueField = "IDVia1";

                    ddlZona.DataSource = MediadorCN.GetDireccion().ListarVias(4);
                    ddlZona.DataTextField = "sVia1";
                    ddlZona.DataValueField = "IDVia1";

                    ddlVia.DataBind();
                    ddlManzana.DataBind();
                    ddlZona.DataBind();
                    ddlDepa.DataBind();

                    lstViasDistrito = MediadorCN.GetDireccion().ListarUbicacionDistrito(Convert.ToInt32(ddlVia.SelectedValue));
                    ddlViaJesusMaria.DataSource = lstViasDistrito;
                    ddlViaJesusMaria.DataTextField = "sVia1";
                    ddlViaJesusMaria.DataValueField = "Ubicacion";
                    ddlViaJesusMaria.DataBind();
                    txtVia.Visible = false;
                }
            }
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            if (IsMuni)
            {
                objPersonaE = MediadorCN.GetPersona().ObtenerPerTramite(Session["Usuario"].ToString());
                DireccionE objDireccionE = new DireccionE();
                String direcompleta="";
                int Distri = Convert.ToInt32(ddlDistrito.SelectedValue);
                int Depa = Convert.ToInt32(ddlDepartamento.SelectedValue);
                int Provi = Convert.ToInt32(ddlProvincia.SelectedValue);
                if (Distri == -1)
                    lblErrorRegistroDireccion.Text = "Seleccione un distrito.";
                else if (Depa == -1)
                    lblErrorRegistroDireccion.Text = "Seleccione un departamento.";
                else if (Provi == -1)
                    lblErrorRegistroDireccion.Text = "Seleccione una provincia.";
                else
                {
                    objDireccionE.Ubicacion = MediadorCN.GetDireccion().ObtenerIDUbicacion(Depa, Provi, Distri);
                    objDireccionE.IDVia1 = Convert.ToInt32(ddlVia.SelectedValue);
                    objDireccionE.IDVia2 = Convert.ToInt32(ddlManzana.SelectedValue);
                    objDireccionE.IDVia3 = Convert.ToInt32(ddlDepa.SelectedValue);
                    objDireccionE.IDVia4 = Convert.ToInt32(ddlZona.SelectedValue);
                    if (!ddlViaJesusMaria.Visible)
                        objDireccionE.sVia1 = txtVia.Text;
                    else
                        objDireccionE.sVia1 = ddlViaJesusMaria.Text;
                    objDireccionE.SVia2 = txtManzana.Text;
                    objDireccionE.SVia3 = txtDepa.Text;
                    objDireccionE.SVia4 = txtZona.Text;
                    objDireccionE.IDPersona = objPersonaE.IDPersona;
                    direcompleta = ddlVia.SelectedItem.Text + " " + txtVia.Text + " " + ddlManzana.SelectedItem.Text + " " + txtManzana.Text + " " + ddlDepa.SelectedItem.Text + " " + txtDepa.Text + " " + ddlZona.SelectedItem.Text + " " + txtZona.Text + " " + ddlDepartamento.SelectedItem.Text + " - " + ddlProvincia.SelectedItem.Text + " - " + ddlDistrito.SelectedItem.Text;
                    int error = MediadorCN.GetDireccion().ActualizarDireTramite(objDireccionE, direcompleta);
                    switch (error)
                    {
                        case 0: lblErrorRegistroDireccion.Text = "No se pudo registrar su domicilio"; break;
                        case 1:
                            {
                              /*gvDomicilios.DataSource = objDireccionCN.ListaxPersona(Session["UsuLog"].ToString());
                                gvDomicilios.DataBind();*/
                                txtDepa.Text = "";
                                txtManzana.Text = "";
                                txtVia.Text = "";
                                txtZona.Text = "";
                                Limpiarddl(4);
                                lblErrorRegistroDireccion.Text = "Se registró su domicilio correctamente.";
                                lblDireccion.Text = "Su dirección actual es: " + direcompleta;
                            }; break;
                        case 2: lblErrorRegistroDireccion.Text = "Seleccione la vía"; break;
                        case 3: lblErrorRegistroDireccion.Text = "Seleccione dpto/int/lote"; break;
                        case 4: lblErrorRegistroDireccion.Text = "Seleccione la zona"; break;
                        case 5: lblErrorRegistroDireccion.Text = "Seleccione km o manzana"; break;
                        case 6: lblErrorRegistroDireccion.Text = "Ingrese el nombre de la vía"; break;
                        case 7: lblErrorRegistroDireccion.Text = "Ingrese el número de de dpto/int/lote"; break;
                        case 8: lblErrorRegistroDireccion.Text = "Ingrese el nombre de la zona"; break;
                        case 9: lblErrorRegistroDireccion.Text = "Ingrese el número de km o manzana"; break;
                    }
                }
            }
            else
            {
                objPersonaE = MediadorCN.GetPersona().ObtenerPerTramite(Session["UsuLog"].ToString());
                DireccionE objDireccionE = new DireccionE();
                int Distri = Convert.ToInt32(ddlDistrito.SelectedValue);
                int Depa = Convert.ToInt32(ddlDepartamento.SelectedValue);
                int Provi = Convert.ToInt32(ddlProvincia.SelectedValue);
                if (Distri == -1)
                    lblErrorRegistroDireccion.Text = "Seleccione un distrito.";
                else if (Depa == -1)
                    lblErrorRegistroDireccion.Text = "Seleccione un departamento.";
                else if (Provi == -1)
                    lblErrorRegistroDireccion.Text = "Seleccione una provincia.";
                else
                {
                    objDireccionE.Ubicacion = MediadorCN.GetDireccion().ObtenerIDUbicacion(Depa, Provi, Distri);
                    objDireccionE.IDVia1 = Convert.ToInt32(ddlVia.SelectedValue);
                    objDireccionE.IDVia2 = Convert.ToInt32(ddlDepa.SelectedValue);
                    objDireccionE.IDVia3 = Convert.ToInt32(ddlManzana.SelectedValue);
                    objDireccionE.IDVia4 = Convert.ToInt32(ddlZona.SelectedValue);
                    if (!ddlViaJesusMaria.Visible)
                        objDireccionE.sVia1 = txtVia.Text;
                    else
                        objDireccionE.sVia1 = ddlViaJesusMaria.Text;
                    objDireccionE.SVia2 = txtDepa.Text;
                    objDireccionE.SVia3 = txtManzana.Text;
                    objDireccionE.SVia4 = txtZona.Text;
                    objDireccionE.IDPersona = Session["UsuLog"].ToString();
                    int error = MediadorCN.GetDireccion().RegistrarDireccion(objDireccionE);
                    switch (error)
                    {
                        case 0: lblErrorRegistroDireccion.Text = "No se pudo registrar su domicilio"; break;
                        case 1:
                            {
                                gvDomicilios.DataSource = MediadorCN.GetDireccion().ListaxPersona(Session["UsuLog"].ToString());
                                gvDomicilios.DataBind();
                                txtDepa.Text = "";
                                txtManzana.Text = "";
                                txtVia.Text = "";
                                txtZona.Text = "";
                                Limpiarddl(4);
                                lblErrorRegistroDireccion.Text = "Se registró su domicilio correctamente.";
                            }; break;
                        case 2: lblErrorRegistroDireccion.Text = "Seleccione la vía"; break;
                        case 3: lblErrorRegistroDireccion.Text = "Seleccione dpto/int/lote"; break;
                        case 4: lblErrorRegistroDireccion.Text = "Seleccione la zona"; break;
                        case 5: lblErrorRegistroDireccion.Text = "Seleccione km o manzana"; break;
                        case 6: lblErrorRegistroDireccion.Text = "Ingrese el nombre de la vía"; break;
                        case 7: lblErrorRegistroDireccion.Text = "Ingrese el número de de dpto/int/lote"; break;
                        case 8: lblErrorRegistroDireccion.Text = "Ingrese el nombre de la zona"; break;
                        case 9: lblErrorRegistroDireccion.Text = "Ingrese el número de km o manzana"; break;
                    }
                }
            }
        }

        protected void ddlDepartamento_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlProvincia.DataSource = MediadorCN.GetUbicacion().ListaUbicacion(Convert.ToInt32(ddlDepartamento.SelectedValue), 2, 0);
            ddlProvincia.DataTextField = "Descripcion";
            ddlProvincia.DataValueField = "IDUbicacion";
            ddlProvincia.DataBind();
            Limpiarddl(3);
        }

        protected void ddlProvincia_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlDistrito.DataSource = MediadorCN.GetUbicacion().ListaUbicacion(Convert.ToInt32(ddlProvincia.SelectedValue), 3, Convert.ToInt32(ddlDepartamento.SelectedValue));
            ddlDistrito.DataTextField = "Descripcion";
            ddlDistrito.DataValueField = "IDUbicacion";
            ddlDistrito.DataBind();
        }

        protected void gvDomicilios_Seleccionar(object sender, GridViewCommandEventArgs e)
        {
            int index=-1;
            if (e.CommandName == "Editar")
            {
                 index= Convert.ToInt32(e.CommandArgument);                
            }
            if (e.CommandName == "Eliminar")
            {
                index = Convert.ToInt32(e.CommandArgument);
                int result = MediadorCN.GetDireccion().EliminarDireccion(lst[index].IDDireccion);
                if (result == 1)
                {
                    lst.RemoveAt(index);
                    gvDomicilios.DataSource = MediadorCN.GetDireccion().ListaxPersona(Session["UsuLog"].ToString());
                    gvDomicilios.DataBind();
                }
            }
        }

        protected void ddlDistrito_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!IsMuni)
            {
                if (Convert.ToInt32(ddlDistrito.SelectedValue) == 33)
                {
                    txtVia.Visible = false;
                    ddlViaJesusMaria.Visible = true;
                }
                else
                {
                    ddlViaJesusMaria.Visible = false;
                    txtVia.Visible = true;
                }
            }
        }

        protected void ddlVia_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!IsMuni)
            {
                List<DireccionE> lstViasDistrito=new List<DireccionE>();
                lstViasDistrito = MediadorCN.GetDireccion().ListarUbicacionDistrito(Convert.ToInt32(ddlVia.SelectedValue));
                ddlViaJesusMaria.DataSource = lstViasDistrito;
                ddlViaJesusMaria.DataTextField = "sVia1";
                ddlViaJesusMaria.DataValueField = "Ubicacion";
                ddlViaJesusMaria.DataBind();
            }
        }
    }
}